package com.cruise.game.model.vo.common;

import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;

/**
 * 首页VO
 * 
 * @author cruise
 * @date 2025-02-28
 */
@Data
public class HomeVO implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 通告列表
     */
    private List<AnnouncementVO> announcements;

    /**
     * 轮播图列表
     */
    private List<CarouselVO> carousels;

    /**
     * 游戏分类列表
     */
    private List<GameCategoryVO> categories;

    /**
     * 热门服务列表
     */
    private List<GameServiceVO> hotServices;

    /**
     * 推荐服务列表
     */
    private List<GameServiceVO> recommendedServices;

    /**
     * 最近订单列表
     */
    private List<RecentOrderVO> recentOrders;

    /**
     * 通告VO
     */
    @Data
    public static class AnnouncementVO implements Serializable {

        private static final long serialVersionUID = 1L;

        /**
         * 通告ID
         */
        private Long id;

        /**
         * 标题
         */
        private String title;

        /**
         * 内容
         */
        private String content;
    }

    /**
     * 轮播图VO
     */
    @Data
    public static class CarouselVO implements Serializable {

        private static final long serialVersionUID = 1L;

        /**
         * 轮播图ID
         */
        private Long id;

        /**
         * 图片URL
         */
        private String imageUrl;

        /**
         * 链接URL
         */
        private String linkUrl;

        /**
         * 标题
         */
        private String title;
    }

    /**
     * 游戏分类VO
     */
    @Data
    public static class GameCategoryVO implements Serializable {

        private static final long serialVersionUID = 1L;

        /**
         * 分类ID
         */
        private Long id;

        /**
         * 分类名称
         */
        private String name;

        /**
         * 分类图标URL
         */
        private String iconUrl;
    }

    /**
     * 游戏服务VO
     */
    @Data
    public static class GameServiceVO implements Serializable {

        private static final long serialVersionUID = 1L;

        /**
         * 服务ID
         */
        private Long id;

        /**
         * 服务名称
         */
        private String name;

        /**
         * 价格
         */
        private BigDecimal price;

        /**
         * 服务图片URL
         */
        private String imageUrl;
    }

    /**
     * 最近订单VO
     */
    @Data
    public static class RecentOrderVO implements Serializable {

        private static final long serialVersionUID = 1L;

        /**
         * 用户昵称
         */
        private String userNickname;

        /**
         * 服务名称
         */
        private String serviceName;

        /**
         * 时间描述
         */
        private String timeAgo;
    }
}
